package com.server.service.data;

import java.util.List;

import com.client.service.data.CompagnieDataService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.server.store.PoolManager;
import com.server.store.data.CompagnieManager;
import com.shared.context.User;
import com.shared.data.TypeIData;
import com.shared.model.Apporteur;
import com.shared.model.Compagnie;
/**
 * Implémentation du service de gestion des {@link Compagnie}
 * @author queyroi
 *
 */
public class CompagnieDataServiceImpl extends RemoteServiceServlet implements CompagnieDataService{

	//@Override
	public String delete(Compagnie compagnie) throws IllegalArgumentException {
		checkInput(compagnie);
		checkCurrentIsAdministrator();
		((CompagnieManager) PoolManager.get().getDataManager(TypeIData.COMPAGNIE)).delete(compagnie);
		return "sucess";
	}

	//@Override
	public List getList() throws IllegalArgumentException {		
		return ((CompagnieManager) PoolManager.get().getDataManager(TypeIData.COMPAGNIE)).getList();
	}

	//@Override
	public String save(Compagnie compagnie) throws IllegalArgumentException {
		checkInput(compagnie);
		checkCurrentIsAdministrator();
		((CompagnieManager) PoolManager.get().getDataManager(TypeIData.COMPAGNIE)).save(compagnie);
		return "sucess";
	}

//	@Override
	public String update(Compagnie compagnie) throws IllegalArgumentException {
		checkInput(compagnie);
		checkCurrentIsAdministrator();
		((CompagnieManager) PoolManager.get().getDataManager(TypeIData.COMPAGNIE)).update(compagnie);
		return "sucess";
	}
	
	public void checkInput(Object obj) throws IllegalArgumentException{
		if(obj==null) throw new IllegalArgumentException("Echec d'enregistrement : vérifier les paramètres");
	}
	
	public void checkCurrentIsAdministrator() throws IllegalArgumentException{
		if(!((User) getThreadLocalRequest().getSession().getAttribute("user")).isAdministrator()) throw new IllegalArgumentException("Seul un administrateur est autorisé à réalisé cette opération");
	}

	public Compagnie getCompagnie(long key) throws IllegalArgumentException {
		checkInput(key);		
		for(Compagnie c : ((CompagnieManager) PoolManager.get().getDataManager(TypeIData.COMPAGNIE)).getList()){
			if(c.getKey()==key) return c;
		}
		return new Compagnie();
	}

}
